使用细节层次 (Level of Detail) 节点

如果想根据 细节层次 (Level of Detail) 节点的查看距离,显示相同/不同节点的不同外观时,您可以使用 细节层次 (Level of Detail) 节点。细节层次 (Level of Detail) 节点的每个子节点用于设置一个单个的外观和(当外观被选中和显示时)约束。约束可以是:

细节层次 (Level of Detail) 节点只会影响渲染,因此您无法在布局中使用这些节点。细节层次 (Level of Detail) 节点的大小是其最大子节点的大小,即使该子节点不可见。

注

您只有在其 场景 (Scene) 节点使用 旧渲染通道(已停用)(Legacy Render Pass, deprecated) 渲染 场景 (Scene) 节点的内容时,才能使用 细节层次 (Level of Detail) 节点。

使用 细节层次 (Level of Detail) 节点

要使用 细节层次 (Level of Detail) 节点,请执行以下操作:

  1. 设置 场景 (Scene) 节点渲染一个 细节层次 (Level of Detail) 节点:
    1. 在 素材库 (Library) 按下 Alt 并右键点击 渲染 (Rendering) 中,选择 旧渲染通道(已停用)(Legacy Render Pass, deprecated),并在 属性 (Properties) 中设置其属性以获取所需的渲染结果。
    2. 在 工程 (Project) 选择要创建 细节层次 (Level of Detail) 节点的 场景 (Scene) 节点,并在 属性 (Properties) 中将 渲染通道 (Render Pass) 属性设置为您创建的 旧渲染通道(已停用)(Legacy Render Pass, deprecated)。
  2. 在 工程 (Project) 按下 Alt 并右键点击 您设置的 场景 (Scene) 节点中,选择 细节层次 (Level of Detail)。
    请注意,您只能在 3D 节点中创建 细节层次 (Level of Detail) 节点。
  3. 在属性 (Properties) 中将 类型 (Type) 属性设置为:

    例如,设置类型 (Type) 为 距离 (Distance)。

  4. 在工程 (Project) 中,为 细节层次 (Level of Detail) 节点添加子节点。
    例如,添加一个球体 (Sphere)、一个方框 (Box) 和一个平面 (Plane) 节点。
    对于您为 细节层次 (Level of Detail) 节点添加的每个节点,根据您选择的 细节层次 (Level of Detail) 节点的类型,Kanzi Studio 会添加 最短距离 (Minimum Distance) 或 最小面积 (Minimum Area) 属性。
  5. 选择您为 细节层次 (Level of Detail) 节点添加的每个节点,并在 属性 (Properties) 中,根据 细节层次 (Level of Detail) 节点的类型,设置 最短距离 (Minimum Distance) 或 最小面积 (Minimum Area) 属性值,以定义 细节层次 (Level of Detail) 节点何时显示每一项。
    例如,如果将 类型 (Type) 设置为距离 (Distance),请在 工程 (Project) 中选择:
    1. 球体 (Sphere) 并将其 最短距离 (Minimum Distance) 属性设置为 0。
    2. 方框 (Box) 并将其 最短距离 (Minimum Distance) 属性设置为 10。
    3. 平面 (Plane) 并将其 最短距离 (Minimum Distance) 属性设置为 20。

    当沿 Z 轴移动 细节层次 (Level of Detail) 节点或预览摄像机时,Kanzi 会显示其距离值仅次于 细节层次 (Level of Detail) 节点与预览摄像机之间距离的那个子节点。

在 API 中使用 细节层次 (Level of Detail) 节点

要创建具有三个细节层次的距离细节层次选择器节点:

//创建一个名为 LOD 选择器的细节层次选择器节点。
LevelOfDetail3DSharedPtr lodSelector = LevelOfDetail3D::create(domain, "LOD selector");

//添加 3 个细节层次,每个层次一个子对象。
lodSelector->addChild(lodHigh);
lodSelector->addChild(lodMedium);
lodSelector->addChild(lodLow);

//设置细节层次选择器节点,以便基于细节层次选择器节点
//与预览摄像机之间的距离显示细节层次选择器节点的子对象。
lodSelector->setType(LevelOfDetail3D::LodTypeDistance);
//当与预览摄像机至少相距 10.0f 时,
//请使用低层次的距离子对象 (lodLow)。
LevelOfDetail3D::setMinimumDistance(*lodLow, 10.0f);
//当与预览摄像机至少相距 5.0f 但不到 10.0f 时,
//请使用中等层次的距离子对象 (lodMedium)。
LevelOfDetail3D::setMinimumDistance(*lodMedium, 5.0f);
//当与预览摄像机相距不到 5.0f 时,
//请使用高层次的距离子对象 (lodHigh)。
LevelOfDetail3D::setMinimumDistance(*lodHigh, 0.0f);

有关详细信息,请参阅 API reference 中的 LevelOfDetail3D 类。

细节层次 (Level of Detail) 属性类型和消息

要查看 细节层次 (Level of Detail) 节点可用属性类型和消息的完整列表,请参阅 Level of detail。

另请参阅

使用空节点 (Empty Node) 节点